package thread;

/**
 * 1.void start():启动线程，并执行对象的run()方法
 * 2.run():线程在被调度时执行的操作
 * 3.getName():返回线程的名称
 * 4.setName(String name):设置该线程名称
 * 5.currentThread():返回当前线程，在Thread子类中就是this，通常用于主线程和Runnable实现类
 * 6.yield():线程让步
 * 7.join(): 在线程 a 中调用线程 b 的 join() ，此时 a 进入阻塞状态，知道线程 b 全完执行完以后，线程 a 才结束阻塞状态
 * 8.stop():已过时，当执行此方法时，当前线程强制结束生命期
 * 9.sleep(long millitime):让当前线程 '睡眠' 指定的 millitime 毫秒。在指定的 millitime 毫秒时间内，当前线程是阻塞状态
 *
 * @author Bboy Dday
 * @create 2020:06:10--20:40
 */

class HelloThread extends Thread{

    public HelloThread(String name){
        super(name);
    }

    @Override
    public void run(){
        for (int i = 0; i < 100; i++) {
            if ( i % 2 == 0 ){
                try {
                    sleep( 100 );
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println( currentThread().getName() + " : " + i );
            }

            //yield()线程让步
//            if ( i % 20 == 0 ){
//                yield();
//            }

            if ( i == 25 ){
                stop();
            }

        }
    }

}

public class ThreadMethodsTest {
    public static void main(String[] args) {
        HelloThread ht = new HelloThread("Thread:1 ");

        //setName():设置线程名
        //ht.setName( "线程一" );


        ht.start();

        //给主线程命名
        Thread.currentThread().setName("主线程:");

        for (int i = 0; i < 100; i++) {
            if ( i % 2 == 0 ){
                System.out.println( Thread.currentThread().getName() + " : " + i );
            }

            try {
                if ( i == 20){
                    ht.join();
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        System.out.println( ht.isAlive() );

    }
}




